package dto

import (
	"monoblog/domain/auth"
)

// LoginForm 登录请求数据：Add、Update
type LoginForm struct {
	Username string `json:"username" validate:"required,min=2,max=50"` // 名称：必填，2-50个字符
	Password string `json:"password" validate:"required,min=2,max=50"` // 密码：必填，2-50个字符
}

// CategoryReqForm 请求参数封装对象：Add、Update
type CategoryReqForm struct {
	Name string `json:"name" validate:"required,min=2,max=50"` // 名称：必填，2-50个字符
	Seq  int    `json:"seq" validate:"min=0,max=999"`          // 排序：0-999之间
	Icon string `json:"icon" validate:"omitempty,max=20"`      // 图标：可选，最大20个字符
}

// ArticleReqForm 请求参数封装对象：Add、Update
type ArticleReqForm struct {
	Title   string `json:"title" validate:"required,min=2,max=100"` // 标题：必填，2-100个字符
	Content string `json:"content" validate:"required,max=99999"`   // 内容：必填，最大99999个字符
	DirId   int64  `json:"dirId" validate:"omitempty,max=50"`       // 目录ID：可选，最大50个字符

	LoginUser *auth.LoginUser `json:"-"` // 登录用户信息
}

// ArticleReqPublishForm 请求参数封装对象：Publish
type ArticleReqPublishForm struct {
	Title      string   `json:"title" validate:"required,min=2,max=100"` // 标题：2-100个字符（必填）
	CategoryId string   `json:"categoryId" validate:"required,max=50"`   // 分类ID：，最大50个字符（必填）
	ShowText   string   `json:"showText" validate:"required,max=500"`    // 展示文本：，最大500个字符（必填）
	Photo      string   `json:"photo" validate:"omitempty,max=200"`      // 图片URL：可选，最大200个字符
	SectionId  string   `json:"sectionId" validate:"omitempty,max=50"`   // 文章的专栏ID：可选，最大50个字符
	Tags       []string `json:"tags" validate:"omitempty,max=20"`        // 标签：可选，最大20个字符

	LoginUser *auth.LoginUser `json:"-"` // 登录用户信息
}

// CommentReqForm 评论请求参数
type CommentReqForm struct {
	BlogId         string `json:"blogId" validate:"required"`          // 文章ID：必填
	Content        string `json:"content" validate:"required,max=250"` // 评论内容：必填，最大250个字符
	RootCommentId  string `json:"rootCommentId" validate:"omitempty"`  // 根评论ID：可选 （如果是一级评论，该字段为空；如果是回复评论，该字段为(回复的是一级评论)）
	ReplyCommentId string `json:"replyCommentId" validate:"omitempty"` // 回复的评论ID：可选（如果回复的是一级评论，此字段为空，如果回复的是二级评论，则是二级评论的ID）
	ReplyToUser    string `json:"replyToUser" validate:"omitempty"`    // 回复的用户ID：可选（如果回复的是一级评论，此字段为空，如果回复的是二级评论，则是二级评论的用户）

	LoginUser *auth.LoginUser `json:"-"` // 登录用户信息
}

// UserRegisterReqForm 用户注册请求参数
type UserRegisterReqForm struct {
	Username   string `json:"username" validate:"required,max=20"`    //username 作为user的业务唯一ID（简称userId）                    // username
	Password   string `json:"password" validate:"required,max=50"`    // 密码 (明文)
	Phone      string `json:"phone" validate:"omitempty,max=20"`      // 手机号
	Email      string `json:"email" validate:"omitempty,max=20"`      // 邮箱
	Nickname   string `json:"nickname" validate:"omitempty,max=20"`   // 昵称
	VerifyCode string `json:"verifyCode" validate:"omitempty,max=10"` // 验证码

}

// SectionReqForm 请求参数封装对象：Add、Update
type SectionReqForm struct {
	Name        string `json:"name" validate:"required,min=2,max=50"`    // 名称：必填，2-50个字符
	Description string `json:"description" validate:"omitempty,max=200"` // 描述：可选，最大200个字符
	Photo       string `json:"photo" validate:"omitempty,max=200"`       // 图片URL：可选，最大200个字符

	LoginUser *auth.LoginUser `json:"-"` // 登录用户信息
}

type FeedbackReqForm struct {
	Content string `json:"content" validate:"required,max=250"` // 反馈内容：必填，最大250个字符
	Kind    string `json:"kind" validate:"required,max=50"`     // 反馈类型
	Contact string `json:"contact" validate:"omitempty,max=50"` // 联系方式

	LoginUser *auth.LoginUser `json:"-"` // 登录用户信息
}
